home *** CD-ROM | disk | FTP | other *** search
/ ASME's Mechanical Engine…ing Toolkit 1997 December / ASME's Mechanical Engineering Toolkit 1997 December.iso / basic / bullet.bas < prev    next >
BASIC Source File  |  1988-06-27  |  8KB  |  161 lines

  1. 5 CLS
  2. 10 REM ballistics program
  3. 15 PRINT"Ballistics Program"
  4. 20 PRINT
  5. 25 PRINT "Velocity increase per additional inch in barrel length is:
  6. 30 PRINT "10 fps in the 2000-2500 fps range, 20 fps in the 2500-3000 fps range,
  7. 35 PRINT "30 fps in the 3000-3500 fps range, & 40 fps in the 3500-4000 fps range.
  8. 40 PRINT
  9. 50 DIM V1(22),S1(22),A1(22,7)
  10. 60 FOR I=1 TO 22:READ V1(I):NEXT I
  11. 70 FOR I=1 TO 22:READ S1(I):NEXT I
  12. 80 FOR I=1 TO 22
  13. 90 FOR J=1 TO 7
  14. 100 READ A1(I,J)
  15. 110 NEXT J
  16. 120 NEXT I
  17. 130 REM
  18. 140 INPUT "Identify Cartridge and/or bullet";C$:PRINT
  19. 150 INPUT "Ballistic coefficient (C1)";C1
  20. 160 INPUT "Standard conditions? (y or n)";M$
  21. 170 IF M$="y" OR M$="Y" THEN RO=1:AL=0:TF=59:GOTO 220
  22. 180 IF M$<>"n" AND M$<>"N" THEN 160
  23. 190 INPUT "Altitude at gun (ft)";AL
  24. 200 INPUT "Temperature (deg f)";TF
  25. 210 AF=1-AL*3.59596E-05 + (AL^2)*4.7741E-10:RF=518.67/(459.67+TF):RO=AF*RF
  26. 220 INPUT "Bullet weight (grains)";G
  27. 230 INPUT "Height of sight above bore (inches)";H
  28. 240 INPUT "Muzzle velocity (fps)";V:PRINT:PRINT
  29. 250 IF V>=300 AND V<=4500 THEN 280
  30. 260 PRINT "Velocity is out of range of program.  Use tables ";
  31. 270 PRINT "or select a velocity between 300 and 4500 fps.";GOTO 240:PRINT:PRINT
  32. 280 FOR I=1 TO 22
  33. 290 I1=I
  34. 300 IF V<V1(I) THEN 320
  35. 310 NEXT I
  36. 320 IF Q3=2 THEN 340
  37. 330 X=0
  38. 340 DV=V-A1(I1,1)
  39. 350 SV=A1(I1,2)+A1(I1,3)*DV+A1(I1,4)*DV^2
  40. 360 TV=A1(I1,5)+A1(I1,6)*DV+A1(I1,7)*DV^2
  41. 370 SU=SV+X/(C1/RO)
  42. 380 IF SU<=43041! THEN 410
  43. 390 PRINT "Velocity is out of range of program.  Use tables or choose";
  44. 400 PRINT "higher muzzle velocity or shorter range.":GOTO 240
  45. 410 FOR I=1 TO 22
  46. 420 I1=I
  47. 430 IF SU>S1(I) THEN 450
  48. 440 NEXT I
  49. 450 U=A1(I1,1)+(-A1(I1,3)-SQR(A1(I1,3)^2-4*A1(I1,4)*(A1(I1,2)-SU)))/(2*A1(I1,4))
  50. 460 EN=U^2*G/450400!
  51. 470 F=14.0069+6.59285*((U/V)-.65)-1.94051*((U/V)-.65)^2
  52. 480 TU=A1(I1,5)+A1(I1,6)*(U-A1(I1,1))+A1(I1,7)*(U-A1(I1,1))^2
  53. 490 T=(C1/RO)*(TU-TV)
  54. 500 D=12*F*T^2
  55. 510 YM=12*4.05*T^2
  56. 520 DF=176*(T-X/V)
  57. 530 IF X=0 THEN E=H:GOTO 560
  58. 540 E=(D+H)/(X/300)
  59. 550 IF Q4=2 THEN E2=E:GOTO 1080
  60. 560 IF Q1=2 AND Q3=1 THEN E2=E:GOTO 1190
  61. 570 HM=YM-.4*H
  62. 580 IF HM<0 THEN HM=0
  63. 590 IF X=0 THEN T=0:D=0:YM=0:HM=-H
  64. 600 REM
  65. 610 REM
  66. 620 IF Q1=2 THEN 670
  67. 630 Q1=2
  68. 640 REM this section deleted
  69. 650 INPUT "Enter the zero range (yards)";R:X=3*R:PRINT
  70. 660 GOTO 370
  71. 670 GOSUB 1280
  72. 680 PRINT"Muzzle velocity (fps):"TAB(33)V
  73. 690 PRINT "Range (yards):";TAB(33)R
  74. 700 PRINT "Remaining velocity (fps):";TAB(33)INT(U+.49)
  75. 710 PRINT "Remaining energy (ft-lbs):";TAB(33)INT(EN+.49)
  76. 720 PRINT "Time of flight (sec):";TAB(33)INT (1000*T+.49)/1000
  77. 730 PRINT "Total drop (inches):";TAB(33)INT(10*D+.49)/10
  78. 740 PRINT "Max ht above sight line (in):";TAB(33)INT(10*HM+.49)/10
  79. 750 PRINT "Elevation required (moa):";TAB(33)INT(10*E+.49)/10
  80. 760 PRINT "Defl. 10 mph crosswind (inches):";TAB(33)INT(10*DF+.49)/10:PRINT
  81. 770 INPUT "Do you want hard copy? (y or n)";B$
  82. 780 IF B$="n" OR B$="N" THEN 900
  83. 790 GOSUB 1250
  84. 800 LPRINT "Muzzle velocity (fps):"TAB(40)V
  85. 810 LPRINT "Range (yards):"TAB(40)R
  86. 820 LPRINT "Remaining velocity (fps):"TAB(40)INT(U+.49)
  87. 830 LPRINT "Remaining energy (ft-lbs):"TAB(40)INT (EN+.49)
  88. 840 LPRINT "Time of flight (sec):"TAB(40)INT(1000*T+.49)/1000
  89. 850 LPRINT "Total drop (inches):"TAB(40)INT(10*D+.49)/10
  90. 860 LPRINT "Max ht above line of sight (inches):"TAB(40)INT(10*HM+.49)/10
  91. 870 LPRINT "Elevation required (moa):"TAB(40)INT(10*E+.49)/10
  92. 880 LPRINT "Defl. 10 mph crosswind (inches):"TAB(40)INT(10*DF+.49)/10:LPRINT
  93. 890 REM
  94. 900 PRINT "What next?"
  95. 910 PRINT "1 = Bullet trajectory at other ranges with this zeroing range"
  96. 920 PRINT "2 = New muzzle velocity":PRINT "3 = New range":PRINT "4 = New cartridge":PRINT "5 = End program":PRINT
  97. 930 INPUT "Your choice, please";Q3
  98. 940 IF Q3=1 THEN CLS:GOTO 1000
  99. 950 IF Q3=2 THEN CLS:GOTO 240
  100. 960 IF Q3=3 THEN CLS:GOTO 650
  101. 970 IF Q3=4 THEN CLEAR:CLS:GOTO 50
  102. 980 IF Q3=5 THEN END
  103. 990 PRINT "Choice must be 1, 2, 3, 4, or 5":GOTO 930
  104. 1000 E1=E:R1=X/3
  105. 1010 INPUT "Maximum range for table (yards)";MR:MX=3*MR
  106. 1020 INPUT "Range increment (yards)";DR:DX=3*DR
  107. 1030 CLS:GOSUB 1280
  108. 1040 Q4=2:PRINT "Range";TAB(10)"Velocity";TAB(22)"Energy";TAB(32)"+/- sight";TAB(44)"+/- sight";TAB(56)"Wind defl";TAB(69)"Time flt"
  109. 1050 PRINT "yards";TAB(11)"fps";TAB(22)"ft-lbs";TAB(34)"moa";TAB(46)"inches";TAB(57)"inches";TAB(71)"sec":PRINT
  110. 1060 PRINT 0;TAB(10)V;TAB(22)INT(G*V^2/450400!+.49);TAB(34)"  -";TAB(46)-H;TAB(58)0;TAB(70)0
  111. 1070 X=DX:R2=X/3:GOTO 370
  112. 1080 PRINT R2;TAB(10)INT(U+.49);TAB(22)INT(EN+.49);TAB(34)INT(10*(E1-E2)+.49)/10;TAB(46)INT(10*(E1-E2)*(R2/100)+.49)/10;TAB(58)INT(10*DF+.49)/10;TAB(70)INT(1000*T+.49)/1000
  113. 1090 IF X>=MX THEN 1110
  114. 1100 X=X+DX:R2=X/3:GOTO 370
  115. 1110 Q4=0:PRINT
  116. 1120 INPUT "Do you want hard copy (y or n)";I$:IF I$="n" OR I$="N" THEN 1230
  117. 1130 GOSUB 1250
  118. 1140 LPRINT "Range";TAB(10)"Velocity";TAB(22)"Energy";TAB(32)"+/- sight";TAB(44)"+/- sight";TAB(56)"Wind defl";TAB(69)"Time flt"
  119. 1150 REM
  120. 1160 LPRINT "yards";TAB(11)"fps";TAB(22)"ft-lbs";TAB(34)"moa";TAB(46)"inches";TAB(57)"inches";TAB(71)"sec":LPRINT
  121. 1170 LPRINT 0;TAB(10)V;TAB(22)INT(G*V^2/450400!+.49);TAB(34)"  -";TAB(46)-H;TAB(58)0;TAB(70)0
  122. 1180 X=DX:R2=X/3:GOTO 370
  123. 1190 LPRINT R2;TAB(10)INT(U+.49);TAB(22)INT(EN+.49);TAB(34)INT(10*(E1-E2)+.49)/10;TAB(46)INT(10*(E1-E2)*(R2/100)+.49)/10;TAB(58)INT(10*DF+.49)/10;TAB(70)INT(1000*T+.49)/1000
  124. 1200 IF X>=MX THEN 1220
  125. 1210 X=X+DX:R2=X/3:GOTO 370
  126. 1220 LPRINT
  127. 1230 INPUT "Want to continue (y or n)";I$:IF I$ = "y" OR I$="Y" THEN CLEAR:CLS:GOTO 50
  128. 1240 STOP
  129. 1250 LPRINT:LPRINT:LPRINT"Cartridge:"TAB(34)C$:LPRINT "Bullet weight (gr):";TAB(33)G:LPRINT "Standard ballistic coefficient:";TAB(33)C1:LPRINT"Ht of sight above bore (inches):";TAB(33)H
  130. 1260 LPRINT "Gun altitude (ft):";TAB(33)AL:LPRINT "Temperature (deg F):";TAB(33)TF:LPRINT
  131. 1270 RETURN
  132. 1280 CLS:PRINT"Cartridge:"TAB(34)C$:PRINT "Bullet weight (gr):"TAB(33)G:PRINT"Standard ballistic coefficient:"TAB(33)C1:PRINT"Ht of sight above bore (inches):"TAB(33)H:PRINT"Gun altitude (ft):"TAB(33)AL:PRINT "Temperature (deg F):"TAB(33)TF:PRINT
  133. 1290 RETURN
  134. 1300 DATA 400,500,600,700,800,900,1000,1050,1075,1100,1110,1120,1130,1150,1250
  135. 1310 DATA 1500,2000,2500,3000,3500,4000,4500
  136. 1320 DATA 36664.2,31488.6,27124.6,23415.1,20325.5,17879.9,16095.6,15433.3
  137. 1330 DATA 15140.3,14894.3,14798.5,14706.2,14616.9,14447,13720.5,12330.3,10168.1
  138. 1340 DATA 8332.83,6699.05,5245.45,3958.11,2812.29
  139. 1350 DATA 350,39663,-63.768,.0758391,49.669,-.1845,4.82396e-4
  140. 1360 DATA 450,33958.1,-51.756,.0473157,35.269,-.115879,2.34824e-4
  141. 1370 DATA 550,29218.7,-43.64,.035161,25.7322,-.079629,1.36695e-4
  142. 1380 DATA 650,25192,-37.095,.0311391,18.9904,-.057305,9.20586e-5
  143. 1390 DATA 750,21792,-30.896,.0313196,14.1144,-.041349,6.9381e-5
  144. 1400 DATA 850,19020.1,-24.4588,.0330303,10.6366,-.0288527,5.58719e-5
  145. 1410 DATA 950,16906.5,-17.8388,.0325134,8.27886,-.01884,4.41677e-5
  146. 1420 DATA 1025,15747.2,-13.2423,.0276581,7.10211,-.0129298,3.32035e-5
  147. 1430 DATA 1062.5,15288.1,-11.3183,.023346,6.66207,-.0106524,2.68757e-5
  148. 1440 DATA 1087.5,15019.2,-10.2383,.0199585,6.41183,-9.41688e-3,2.2611e-5
  149. 1450 DATA 1105,14846,-9.58136,.0164795,6.25378,-8.66849e-3,2.0396e-5
  150. 1460 DATA 1115,14751.9,-9.23136,.0165939,6.16907,-8.28369e-3,1.83284e-5
  151. 1470 DATA 1125,14661.2,-8.93002,.0147629,6.08802,-7.93184e-3,1.70991e-5
  152. 1480 DATA 1140,14530.6,-8.482,.0116909,5.97274,-7.45342e-3,1.50953e-5
  153. 1490 DATA 1200,14062.5,-7.2568,8.50001e-3,5.57228,-6.058e-3,9.6174e-6
  154. 1500 DATA 1375,12977.5,-5.5464,3.06207e-3,4.72557,-4.05656e-3,3.72586e-6
  155. 1510 DATA 1750,11189.1,-4.31589,9.60342e-4,3.56969,-2.49074e-3,1.27366e-6
  156. 1520 DATA 2250,9222.06,-3.66916,4.5401e-4,2.57801,-1.63915e-3,5.68494e-7
  157. 1530 DATA 2750,7492.73,-3.26733,3.71407e-4,1.88267,-1.1924e-3,3.52828e-7
  158. 1540 DATA 3250,5950.45,-2.90704,3.48885e-4,1.36656,-8.97071e-4,2.45908e-7
  159. 1550 DATA 3750,4582.38,-2.57414,3.10524e-4,.974457,-6.88003e-4,1.74925e-7
  160. 1560 DATA 4250,3369.09,-2.29123,2.57709e-4,.670381,-5.40083e-4,1.24357e-7
  161.